Substrate 概览|Substrate 的三种使用方式
本文是 Substrate 文档的较高级别切入。
“阅读所需的专业知识:为了最大限度地利用 Substrate,你应该对区块链概念和基本密码学有很好的了解。对诸如区块头、区块、客户端、哈希、交易和签名之类的术语应该很熟悉。目前,你也需要把 Rust 语言作为一种工作技能,去定制/适应 Substrate(尽管这不是我们的最终目标)。
Substrate 是一个区块链开发框架,具有完全通用的状态转换功能(STF[1])和模块化组件,用于共识、网络和配置。
尽管它是 “完全通用的”,但也有标准和约定,特别是 Substrate runtime 模块库(也称为 FRAME[2]),它是支持 STF 的底层数据结构,从而使快速开发区块链成为现实。
用法
Substrate 被设计用于以下三种方式:
使用 Substrate Node:你可以运行预先设计好的 Substrate 节点,并使用包含默认节点 runtime 的创世块对其进行配置。在这种情况下,你只需要配置一个 JSON 文件就可以启动自己的区块链。这为你提供了最少的自定义量,你只需要更改包含的 runtime 模块的生成参数,如:余额、staking、区块期、费用、治理等... 有关此操作的教程,请查看使用 Substrate 建立一个私有网络[3]。 使用 Substrate FRAME:你可以使用 FRAME 轻松创建自己的自定义区块链。这为你在自己的区块链逻辑上提供了非常大的自由度,允许你更改数据类型、从模块库中选择并添加自己的自定义模块。由于区块生产逻辑是通过链上逻辑实现的,因此许多内容可以在不接触区块生产逻辑的情况下进行更改。如果是这种情况,那么现有的 Substrate 二进制文件可以用于出块和区块同步。如果需要修改出块逻辑,则必须将新的出块二进制文件构建为单独的项目并由验证人使用。这就是 Polkadot 中继链的构建方式,在不久的将来应该可以满足几乎所有的需求。有关此方面的教程,请参见创建你的第一条 Substrate 链[4]。 使用 Substrate Core:你可以忽略整个 FRAME[5],从头开始设计和实现整个 runtime 。这可以使用任何面向 WebAssembly 的语言来完成。如果可以使 runtime 与 Substrate 节点的抽象区块生产逻辑兼容,那么你只需从 Wasm blob 构造一个新的 genesis 块,并使用现有的基于 Rust 的 Substrate 客户端启动链。如果没有,则需要更改客户端的区块生产逻辑,甚至可能更改区块头和区块序列化格式。就开发投入而言,这是迄今为止难度最高的 Substrate 使用方式,但同时也给了你最大程度的创新自由。
下一步
了解更多
浏览我们的开发文档「使用 FRAME 进行模块开发」[6]。
案例
用 Substrate 开发你的第一条自定义区块链[7] 用 Substrate 开发一条私有链[8] 将 runtime 模块添加到 Substrate runtime[9]
参考
查看 Rust 参考文档[10]
参考资料
STF: https://substrate.dev/docs/en/glossary#stf-state-transition-function
[2]FRAME: https://substrate.dev/docs/en/conceptual/runtime/frame
[3]使用 Substrate 建立一个私有网络: https://substrate.dev/docs/en/tutorials/start-a-private-network/
[4]创建你的第一条 Substrate 链: https://substrate.dev/docs/en/tutorials/creating-your-first-substrate-chain/
[5]FRAME: https://substrate.dev/docs/en/conceptual/runtime/frame
[6]「使用 FRAME 进行模块开发」: https://substrate.dev/docs/en/development/module/
[7]用 Substrate 开发你的第一条自定义区块链: https://substrate.dev/docs/en/tutorials/creating-your-first-substrate-chain/index
[8]用 Substrate 开发一条私有链: https://substrate.dev/docs/en/tutorials/start-a-private-network-with-substrate
[9]将 runtime 模块添加到 Substrate runtime: https://substrate.dev/docs/en/tutorials/adding-a-module-to-your-runtime
[10]Rust 参考文档: https://substrate.dev/rustdocs/master
欢迎学习 Substrate:
https://substrate.dev/
关注 Substrate 进展:
https://github.com/paritytech/substrate
关注 Polkadot 进展:
https://github.com/paritytech/polkadot
申请 Bootcamp:
https://bootcamp.web3.foundation/
更多内容:
平行链必须是区块链,Plasm layer2 可以是单个数据库 | PW 专访
波卡周报 | Gavin 发推,波卡即使没有平行链或多线程,仍可保持 1000 tx/s
扫码关注公众号,回复 “1” 加入波卡群
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!